학습 목표
[9정03-06] 함수를 활용하여 프로그램을 구조화하고, 오류를 수정(디버깅)하여 문제를 해결한다
- 함수가 왜 필요한지 알고, 명령을 묶어 이름 붙여 재사용할 수 있다.
- 매개변수로 값을 전달하고 반환값을 돌려받는 함수의 동작을 설명할 수 있다.
- 프로그램의 오류(버그)를 찾아 고치는 디버깅 과정을 경험한다.
생각 열기 🤔
라면을 끓일 때마다 "물 붓기 → 끓이기 → 면 넣기 → 스프 넣기"를 매번 설명하긴 번거롭죠. 그냥 "라면 끓이기!" 한마디면 충분해요. 이렇게 여러 동작을 하나로 묶어 이름 붙인 것이 바로 함수예요! 🍜
그런데 라면을 끓였더니 너무 짜다면? 어디서 잘못됐는지 원인을 찾아 고쳐야 해요. 프로그램에서 잘못된 부분을 버그(bug), 그것을 찾아 고치는 일을 디버깅(debugging)이라고 한답니다. 🐞
💡 함수로 "묶고", 디버깅으로 "고친다" — 프로그래머의 두 가지 핵심 기술!
1. 함수란?
명령을 묶어 이름 붙이고, 다시 쓴다
함수(function)는 자주 쓰는 명령들을 하나로 묶어 이름을 붙인 것이에요. 한 번 만들어 두면 이름만 불러(호출) 몇 번이고 재사용할 수 있죠. 함수에 값을 넣어 주는 것을 매개변수, 함수가 돌려주는 결과를 반환값이라고 해요.
묶기
반복되는 명령을 한 덩어리로! 프로그램이 짧고 깔끔해져요.
재사용
한 번 만들면 이름만 불러 여러 번 사용! 같은 코드를 또 쓰지 않아요.
수정 쉬움
고칠 때 함수 한 곳만 바꾸면 끝! 실수도 줄어들어요.
📐 인터랙티브 · 함수 호출 시뮬레이터
다각형그리기(변의수, 색) 함수 하나로 여러 도형을! 매개변수만 바꿔 호출하면 같은 함수가 다른 그림을 그려요.
함수 정의
호출식: 다각형그리기(5, 주황)
📜 호출 기록 (0회)
2. 매개변수와 반환값
값을 넣으면(입력), 결과를 돌려준다(출력)
함수는 자판기와 비슷해요. 매개변수(입력)로 동전과 버튼을 넣으면,
반환값(출력)으로 음료가 나오죠! 예를 들어 합(3, 5) 함수는
매개변수 3과 5를 받아 반환값 8을 돌려줘요. 우리는 그 8을 다른 곳에 가져다 쓸 수 있고요.
💻 의사코드 — 더하기 함수
↑ a, b가 매개변수, a+b가 반환값!
🧩 스크래치 "나만의 블록"
스크래치에서는 함수를 "나만의 블록"으로 만들어요!
🎰 인터랙티브 · 함수 자판기 (반환값 체험)
두 수 a, b를 매개변수로 넣고 호출하면, 합(a, b) 함수가 반환값을 돌려줘요!
합(3, 5)
반환값
8
📜 호출 기록
합 함수라도 매개변수가 달라지면 반환값도 달라져요. a, b에 음수나 큰 수를 넣어 호출해 보세요!
3. 디버깅 (버그 찾기)
잘못된 곳을 찾아 고치는 탐정 놀이
프로그램이 생각대로 동작하지 않을 때, 그 오류를 버그(bug)라고 해요. 버그를 찾아 고치는 일이 디버깅(debugging)! 좋은 프로그래머는 코드를 잘 짤 뿐 아니라, 버그를 빠르게 찾아 고치는 사람이랍니다. 🕵️

🦟 진짜 '벌레'에서 나온 말, 버그
1947년, 한 컴퓨터가 자꾸 오작동해 살펴보니 진짜 나방이 부품 사이에 끼어 있었어요. 연구원들은 그 나방을 일지에 붙이고 "최초로 버그(벌레)를 발견함"이라 적었죠. 그 뒤로 컴퓨터 오류를 버그, 그것을 고치는 일을 디버깅이라 부르게 됐답니다.
미 해군(U.S. Navy) · Public Domain · Wikimedia Commons
증상 관찰
어떤 결과가 잘못 나왔지?
원인 추측
어디가 의심스럽지?
코드 검사
한 줄씩 따라가 본다
수정·재실행
고치고 다시 확인!
🕵️ 인터랙티브 · 버그 찾기 챌린지
목표와 실제 결과를 비교해 보고, 버그가 있는 줄을 클릭하세요! 맞히면 고치는 방법이 나와요.
🐞 증상: 프로그램이 멈추지 않고 무한 반복돼요!
↑ 버그가 의심되는 줄을 클릭해 보세요.
🐞 증상: 4를 넣었는데 "홀수"라고 잘못 나와요!
↑ 버그가 의심되는 줄을 클릭해 보세요.
+와 -, 몫과 나머지처럼요. 그래서 한 줄씩 꼼꼼히 따라가는 습관이 중요해요!
참고 — 한 걸음 더 (성취기준 밖 심화)
🪆 재귀 — 함수가 자기 자신을 불러요
함수 안에서 자기 함수를 다시 부르는 것을 재귀라고 해요. 인형 속 인형(마트료시카)처럼요! 단, 멈추는 조건이 꼭 있어야 무한히 빠지지 않아요.
🔍 프로처럼 디버깅하기
① 값을 출력(print)해 어디서 틀렸는지 보기 · ② 한 줄씩 실행(중단점)하며 추적하기 · ③ 여러 경우로 테스트하기.
참고 — 프로그램은 함께 만들고 나눠요 (성취기준 밖 심화)
👯 짝 프로그래밍
둘이 한 화면에서 '운전자'(코딩)와 '길잡이'(점검) 역할을 번갈아 맡아요. 실수가 줄고 더 빨라요.
🌍 오픈 소스
누구나 보고·고치고·나눌 수 있게 공개한 코드예요. 리눅스·파이썬·안드로이드가 대표적!
🐙 깃·깃허브
여러 명이 같은 코드를 함께 고치고 변경 이력을 관리하는 도구예요(버전 관리).
🤝 공유의 힘
좋은 프로그램은 혼자보다 함께·나눌 때 더 좋아져요. 단, 남의 코드를 쓸 땐 라이선스를 지켜요!
핵심 정리
함수
자주 쓰는 명령을 묶어 이름 붙인 것. 한 번 만들어 여러 번 재사용(호출)한다.
매개변수 · 반환값
매개변수는 함수에 넣는 입력, 반환값은 함수가 돌려주는 결과. 자판기처럼!
디버깅
프로그램의 오류(버그)를 찾아 고치는 일. 증상 관찰 → 원인 추측 → 검사 → 수정!
확인 퀴즈
5문제로 함수와 디버깅을 점검해 봐요!
자주 쓰는 명령을 하나로 묶어 이름 붙여 재사용하는 것을 무엇이라 하나요?
함수에 값을 전달하기 위해 사용하는 입력을 무엇이라 하나요?
합(4, 6) 함수가 두 수를 더해 돌려준다면, 반환값은 무엇일까요?
프로그램의 오류(버그)를 찾아 고치는 일을 무엇이라 하나요?
함수를 사용하면 좋은 점으로 알맞지 않은 것은?
퀴즈 완료!
5문제 중 0문제 정답!
함수와 디버깅까지 마스터! 이제 대단원 평가로 III단원을 정리해 봐요. 🧩